home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / urlscan_detect.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  104 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. #
  5. # Ref: 
  6. #  Date: Sat, 31 May 2003 13:58:58 +1200
  7. #  From: Stephen Cope <mail@nonsense.kimihia.org.nz>
  8. #  To: bugtraq@securityfocus.com
  9. #  Subject: URLScan detection
  10.  
  11.  
  12. if(description)
  13. {
  14.  script_id(11699);
  15.  script_bugtraq_id(7767);
  16.  script_version ("$Revision: 1.5 $");
  17.  
  18.  name["english"] = "URLScan Detection";
  19.  script_name(english:name["english"]);
  20.  
  21.  desc["english"] = "
  22. The remote web server is using URLScan to protect itself,
  23. which is a good thing. 
  24.  
  25. However since it is possible to determine that URLScan is installed, 
  26. an attacker may safely assume that the remote web server is 
  27. Internet Information Server.
  28.  
  29. Risk factor : None";
  30.  
  31.  
  32.  script_description(english:desc["english"]);
  33.  
  34.  summary["english"] = "Detects the presence of URLScan";
  35.  script_summary(english:summary["english"]);
  36.  
  37.  script_category(ACT_GATHER_INFO); 
  38.  
  39.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  40.  
  41.  family["english"] = "Misc.";
  42.  script_family(english:family["english"]);
  43.  script_dependencie("find_service.nes", "httpver.nasl");
  44.  script_require_ports("Services/www", 80);
  45.  exit(0);
  46. }
  47.  
  48. #
  49.  
  50. include("http_func.inc");
  51. include("http_keepalive.inc");
  52. include("misc_func.inc");
  53.  
  54. port = get_http_port(default:80);
  55.  
  56. if (! get_port_state(port)) exit(0);
  57.  
  58.  
  59. #
  60. # Method#1 : do a HTTP HEAD on a regular non-existant page and
  61. # a forbidden fruit, and compare the results (if UseFastPathReject
  62. # is disabled, we will identify the remote urlscan server).
  63. soc = http_open_socket(port);
  64. if(!soc)exit(0);
  65. req = http_head(item:"/someunexistantstuff" + rand() + rand() + ".html", port:port);
  66. send(socket:soc, data:req);
  67. res = http_recv(socket:soc);
  68. close(soc);
  69. res = tolower(res);
  70. if( "<!doctype" >< res || "<html>" >< res ) exit(0);
  71.  
  72.  
  73. req = http_head(item:"/someunexistantstuff.exe", port:port);
  74. soc = http_open_socket(port);
  75. if(!soc)exit(0);
  76. send(socket:soc, data:req);
  77. res2 = http_recv(socket:soc);
  78. close(soc); 
  79. res2 = tolower(res2);
  80.  
  81. flag = 0;
  82. if( "<!doctype" >< res2 || "<html>" >< res2 ) { flag = 1; }
  83.  
  84. #
  85. # Method#2 : Compare the results for a HTTP GET for a non-existant
  86. # page and a forbidden page (is UseFastPathReject is set, then we'll
  87. # note several differences). 
  88. # If UseFastPathReject is set, we will receive a very very small error
  89. # message, whereas we will receive a much longer one if it's not
  90. req = http_get(item:"/someunexistantantsutff" + rand() + rand() + ".html", port:port);
  91. res = http_keepalive_send_recv(port:port, data:req);
  92. if(!ereg(pattern:"^HTTP/[0-9]\.[0-9] 404 ", string:res))exit(0);
  93. if( res == NULL ) exit(0);
  94.  
  95. req = http_get(item:"/someunexistantantsutff.exe", port:port);
  96. res2 = http_keepalive_send_recv(port:port, data:req);
  97. if(!ereg(pattern:"^HTTP/[0-9]\.[0-9] 404 ", string:res2))exit(0);
  98. if( res2 == NULL ) exit(0);
  99.  
  100. if(strlen(res) > 2 * strlen(res2) && flag )security_note(port);
  101.  
  102.